#ifndef K_TYPE_H
#define K_TYPE_H
#pragma once

#include <type_traits>

template <bool Test, class TrueType, class FalseType>
struct K_If {
    typedef TrueType type;
};

template <class TrueType, class FalseType>
struct K_If<false, TrueType, FalseType> {
    typedef FalseType type;
};

template <class T>
struct K_Param : K_If<std::is_scalar<T>::value, T, const T &> {};

#endif // K_TYPE_H